package com.cms.recursoshumanos.json.object;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.cms.recursoshumanos.cache.ListaEventoCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.object.Evento;
import com.cms.recursoshumanos.object.Sede;
import com.cms.recursoshumanos.object.TipoEvento;
import com.cms.recursoshumanos.object.list.ListaEvento;
import com.cms.recursoshumanos.utilities.Tool;

public class JsonObjectGetEventoSede 
{

	private static JsonObjectGetEventoSede _instance = null;
	public static JsonObjectGetEventoSede getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetEventoSede();
		
		return _instance;
	}
	private String Result;
	public JsonObjectGetEventoSede()
	{
	}
	private static final String
	
		GETEVENTOSSEDES = "GETEVENTOSSEDES",
		GETEVENTOSSEDES_STATUS = "STATUS",
		GETEVENTOSSEDES_DATA = "DATA",
		GETEVENTOSSEDES_DATOS_EVENTO = "DATOS_EVENTOS_SEDES",
		
		GETEVENTOSSEDES_EVENTO_ID = "evento_id",
		GETEVENTOSSEDES_NOMBRE_EVENTO = "nombre_evento",
		GETEVENTOSSEDES_DESCRIPCION_EVENTO = "descripcion_evento",
		GETEVENTOSSEDES_SEDE_ID = "sede_id",
		GETEVENTOSSEDES_NOMBRE_SEDE = "nombre_sede",
		GETEVENTOSSEDES_FECHA_INICIO_EVENTO = "fecha_inicio_evento",
		GETEVENTOSSEDES_FECHA_FIN_EVENTO = "fecha_fin_evento",
		GETEVENTOSSEDES_HORA_INIC = "hora_inic",
		GETEVENTOSSEDES_HORA_FIN = "hora_fin",
		GETEVENTOSSEDES_TIPO_EVENTO_ID = "tipo_evento_id",
		GETEVENTOSSEDES_NOMBRE_TIPO_EVENTO = "nombre_tipo_evento",
		GETEVENTOSSEDES_DESCRIPCION_TIPO_EVENTO = "descripcion_tipo_evento";

	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
					JSONObject getListaEvento = jsonObject.getJSONArray(GETEVENTOSSEDES).getJSONObject(0);
					String status = getListaEvento.getString(GETEVENTOSSEDES_STATUS);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
						
						JSONArray data = getListaEvento.getJSONArray(GETEVENTOSSEDES_DATA);
						
						JSONObject objeto_data = data.getJSONObject(0);
						JSONArray datos_evento = objeto_data.getJSONArray(GETEVENTOSSEDES_DATOS_EVENTO);
		
						ListaEvento listado = new ListaEvento();
						
						for (int i = 0; i < datos_evento.length(); i++ )
						{
							
								
								JSONObject json_evento = datos_evento.getJSONObject(i);
								
								
								listado.addEvento(new Evento(Integer.parseInt(json_evento.getString(GETEVENTOSSEDES_EVENTO_ID)),
																										json_evento.getString(GETEVENTOSSEDES_NOMBRE_EVENTO),
																										(json_evento.getString(GETEVENTOSSEDES_DESCRIPCION_EVENTO).equals("null") ?
																												null :
																												json_evento.getString(GETEVENTOSSEDES_DESCRIPCION_EVENTO)),
																										new TipoEvento(Integer.parseInt(json_evento.getString(GETEVENTOSSEDES_TIPO_EVENTO_ID)),
																														json_evento.getString(GETEVENTOSSEDES_NOMBRE_TIPO_EVENTO), 
																														(json_evento.getString(GETEVENTOSSEDES_DESCRIPCION_TIPO_EVENTO).equals("null") ?
																																null:
																																json_evento.getString(GETEVENTOSSEDES_DESCRIPCION_TIPO_EVENTO))),
																										Tool.getInstance().parseStringToDate(json_evento.getString(GETEVENTOSSEDES_FECHA_INICIO_EVENTO)),
																										Tool.getInstance().parseStringToDate(json_evento.getString(GETEVENTOSSEDES_FECHA_FIN_EVENTO)),
																										json_evento.getString(GETEVENTOSSEDES_HORA_INIC),
																										json_evento.getString(GETEVENTOSSEDES_HORA_FIN),
																										new Sede(Integer.parseInt(json_evento.getString(GETEVENTOSSEDES_SEDE_ID)),
																													json_evento.getString(GETEVENTOSSEDES_NOMBRE_SEDE))));
						
							
										
						}
						ListaEventoCache.getInstance().setListaEvento(listado);
					}
					
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				catch (Exception ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}
	}

	public String getResult()
	{
		return Result;
	}
	
}



